#
# (C) COPYRIGHT 2012-2018 ARM Limited. All rights reserved.
#
# This program is free software and is provided to you under the terms of the
# GNU General Public License version 2 as published by the Free Software
# Foundation, and any use by you of this program is subject to the terms
# of such GNU licence.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, you can access it online at
# http://www.gnu.org/licenses/gpl-2.0.html.
#
# SPDX-License-Identifier: GPL-2.0
#
#


menuconfig MALI_MIDGARD
	tristate "Mali Midgard series support"
	select GPU_TRACEPOINTS if ANDROID
	default n
	help
	  Enable this option to build support for a ARM Mali Midgard GPU.

	  To compile this driver as a module, choose M here:
	  this will generate a single module, called mali_kbase.

config MALI_GATOR_SUPPORT
	bool "Streamline support via Gator"
	depends on MALI_MIDGARD
	default n
	help
	  Adds diagnostic support for use with the ARM Streamline Performance Analyzer.
	  You will need the Gator device driver already loaded before loading this driver when enabling
	  Streamline debug support.
	  This is a legacy interface required by older versions of Streamline.

config MALI_MIDGARD_DVFS
	bool "Enable legacy DVFS"
	depends on MALI_MIDGARD && !MALI_DEVFREQ
	default n
	help
	  Choose this option to enable legacy DVFS in the Mali Midgard DDK.

config MALI_MIDGARD_ENABLE_TRACE
	bool "Enable kbase tracing"
	depends on MALI_MIDGARD
	default n
	help
	  Enables tracing in kbase.  Trace log available through
	  the "mali_trace" debugfs file, when the CONFIG_DEBUG_FS is enabled

config MALI_DEVFREQ
	bool "devfreq support for Mali"
	depends on MALI_MIDGARD && PM_DEVFREQ
	default y
	help
	  Support devfreq for Mali.

	  Using the devfreq framework and, by default, the simpleondemand
	  governor, the frequency of Mali will be dynamically selected from the
	  available OPPs.

config MALI_DMA_FENCE
	bool "DMA_BUF fence support for Mali"
	depends on MALI_MIDGARD
	default n
	help
	  Support DMA_BUF fences for Mali.

	  This option should only be enabled if the Linux Kernel has built in
	  support for DMA_BUF fences.

config MALI_PLATFORM_NAME
	depends on MALI_MIDGARD
	string "Platform name"
	default "devicetree"
	help
	  Enter the name of the desired platform configuration directory to
	  include in the build. 'platform/$(MALI_PLATFORM_NAME)/Kbuild' must
	  exist.

# MALI_EXPERT configuration options

menuconfig MALI_EXPERT
	depends on MALI_MIDGARD
	bool "Enable Expert Settings"
	default n
	help
	  Enabling this option and modifying the default settings may produce a driver with performance or
	  other limitations.

config MALI_CORESTACK
	bool "Support controlling power to the GPU core stack"
	depends on MALI_MIDGARD && MALI_EXPERT
	default n
	help
	  Enabling this feature on supported GPUs will let the driver powering
	  on/off the GPU core stack independently without involving the Power
	  Domain Controller. This should only be enabled on platforms which
	  integration of the PDC to the Mali GPU is known to be problematic.
	  This feature is currently only supported on t-Six and t-HEx GPUs.

	  If unsure, say N.

config MALI_DEBUG
	bool "Debug build"
	depends on MALI_MIDGARD && MALI_EXPERT
	default n
	help
	  Select this option for increased checking and reporting of errors.

config MALI_FENCE_DEBUG
	bool "Debug sync fence usage"
	depends on MALI_MIDGARD && MALI_EXPERT && (SYNC || SYNC_FILE)
	default y if MALI_DEBUG
	help
	  Select this option to enable additional checking and reporting on the
	  use of sync fences in the Mali driver.

	  This will add a 3s timeout to all sync fence waits in the Mali
	  driver, so that when work for Mali has been waiting on a sync fence
	  for a long time a debug message will be printed, detailing what fence
	  is causing the block, and which dependent Mali atoms are blocked as a
	  result of this.

	  The timeout can be changed at runtime through the js_soft_timeout
	  device attribute, where the timeout is specified in milliseconds.

config MALI_NO_MALI
	bool "No Mali"
	depends on MALI_MIDGARD && MALI_EXPERT
	default n
	help
	  This can be used to test the driver in a simulated environment
	  whereby the hardware is not physically present. If the hardware is physically
	  present it will not be used. This can be used to test the majority of the
	  driver without needing actual hardware or for software benchmarking.
	  All calls to the simulated hardware will complete immediately as if the hardware
	  completed the task.

config MALI_ERROR_INJECT
	bool "Error injection"
	depends on MALI_MIDGARD && MALI_EXPERT && MALI_NO_MALI
	default n
	help
	  Enables insertion of errors to test module failure and recovery mechanisms.

config MALI_SYSTEM_TRACE
	bool "Enable system event tracing support"
	depends on MALI_MIDGARD && MALI_EXPERT
	default n
	help
	  Choose this option to enable system trace events for each
	  kbase event. This is typically used for debugging but has
	  minimal overhead when not in use. Enable only if you know what
	  you are doing.

config MALI_2MB_ALLOC
	bool "Attempt to allocate 2MB pages"
	depends on MALI_MIDGARD && MALI_EXPERT
	default n
	help
	  Rather than allocating all GPU memory page-by-page, attempt to
	  allocate 2MB pages from the kernel. This reduces TLB pressure and
	  helps to prevent memory fragmentation.

	  If in doubt, say N

config MALI_PWRSOFT_765
	bool "PWRSOFT-765 ticket"
	depends on MALI_MIDGARD && MALI_EXPERT
	default n
	help
	  PWRSOFT-765 fixes devfreq cooling devices issues. The fix was merged
	  in kernel v4.10, however if backported into the kernel then this
	  option must be manually selected.

	  If using kernel >= v4.10 then say N, otherwise if devfreq cooling
	  changes have been backported say Y to avoid compilation errors.

# Instrumentation options.

config MALI_JOB_DUMP
	bool "Enable system level support needed for job dumping"
	depends on MALI_MIDGARD && MALI_EXPERT
	default n
	help
	  Choose this option to enable system level support needed for
	  job dumping. This is typically used for instrumentation but has
	  minimal overhead when not in use. Enable only if you know what
	  you are doing.

config MALI_PRFCNT_SET_SECONDARY
	bool "Use secondary set of performance counters"
	depends on MALI_MIDGARD && MALI_EXPERT
	default n
	help
	  Select this option to use secondary set of performance counters. Kernel
	  features that depend on an access to the primary set of counters may
	  become unavailable. Enabling this option will prevent power management
	  from working optimally and may cause instrumentation tools to return
	  bogus results.

	  If unsure, say N.

source "drivers/gpu/arm/midgard/platform/Kconfig"
source "drivers/gpu/arm/midgard/tests/Kconfig"
